//package com.inforest.repository;
//
//import com.inforest.config.DatabaseConfig;
//import com.inforest.model.User;
//
//import java.sql.*;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Optional;
//
//public class UserRepositoryImpl implements UserRepository {
//
//    @Override
//    public User save(User user) {
//        String sql = "INSERT INTO users(name, gender, age, email, phone) VALUES (?,?,?,?,?)";
//
//        try (Connection conn = DriverManager.getConnection(
//                DatabaseConfig.URL,
//                DatabaseConfig.USER,
//                DatabaseConfig.PASSWORD);
//             PreparedStatement stmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) {
//
//            stmt.setString(1, user.getName());
//            stmt.setString(2, user.getGender());
//            stmt.setInt(3, user.getAge());
//            stmt.setString(4, user.getEmail());
//            stmt.setString(5, user.getPhone());
//
//            stmt.executeUpdate();
//
//            try (ResultSet rs = stmt.getGeneratedKeys()) {
//                if (rs.next()) {
//                    user.setId(rs.getInt(1));
//                }
//            }
//            return user;
//        } catch (SQLException e) {
//            throw new RuntimeException("保存用户失败", e);
//        }
//    }
//
//    @Override
//    public Optional<User> findById(int id) {
//        String sql = "SELECT * FROM users WHERE id = ?";
//
//        try (Connection conn = DriverManager.getConnection(
//                DatabaseConfig.URL,
//                DatabaseConfig.USER,
//                DatabaseConfig.PASSWORD);
//             PreparedStatement stmt = conn.prepareStatement(sql)) {
//
//            stmt.setInt(1, id);
//
//            try (ResultSet rs = stmt.executeQuery()) {
//                if (rs.next()) {
//                    return Optional.of(mapResultSetToUser(rs));
//                }
//            }
//            return Optional.empty();
//        } catch (SQLException e) {
//            throw new RuntimeException("查询用户失败", e);
//        }
//    }
//
//    @Override
//    public List<User> findAll() {
//        String sql = "SELECT * FROM users";
//        List<User> users = new ArrayList<>();
//
//        try (Connection conn = DriverManager.getConnection(
//                DatabaseConfig.URL,
//                DatabaseConfig.USER,
//                DatabaseConfig.PASSWORD);
//             PreparedStatement stmt = conn.prepareStatement(sql);
//             ResultSet rs = stmt.executeQuery()) {
//
//            while (rs.next()) {
//                users.add(mapResultSetToUser(rs));
//            }
//            return users;
//        } catch (SQLException e) {
//            throw new RuntimeException("查询用户列表失败", e);
//        }
//    }
//
//    @Override
//    public void deleteById(int id) {
//        String sql = "DELETE FROM users WHERE id = ?";
//
//        try (Connection conn = DriverManager.getConnection(
//                DatabaseConfig.URL,
//                DatabaseConfig.USER,
//                DatabaseConfig.PASSWORD);
//             PreparedStatement stmt = conn.prepareStatement(sql)) {
//
//            stmt.setInt(1, id);
//            stmt.executeUpdate();
//        } catch (SQLException e) {
//            throw new RuntimeException("删除用户失败", e);
//        }
//    }
//
//    @Override
//    public void update(User user) {
//        String sql = "UPDATE users SET name = ?, gender = ?, age = ?, email = ?, phone = ? WHERE id = ?";
//
//        try (Connection conn = DriverManager.getConnection(
//                DatabaseConfig.URL,
//                DatabaseConfig.USER,
//                DatabaseConfig.PASSWORD);
//             PreparedStatement stmt = conn.prepareStatement(sql)) {
//
//            stmt.setString(1, user.getName());
//            stmt.setString(2, user.getGender());
//            stmt.setInt(3, user.getAge());
//            stmt.setString(4, user.getEmail());
//            stmt.setString(5, user.getPhone());
//            stmt.setInt(6, user.getId());
//
//            int affectedRows = stmt.executeUpdate();
//            if (affectedRows == 0) {
//                throw new IllegalArgumentException("用户不存在");
//            }
//        } catch (SQLException e) {
//            throw new RuntimeException("更新用户失败", e);
//        }
//    }
//
//    private User mapResultSetToUser(ResultSet rs) throws SQLException {
//        User user = new User();
//        user.setId(rs.getInt("id"));
//        user.setName(rs.getString("name"));
//        user.setGender(rs.getString("gender"));
//        user.setAge(rs.getInt("age"));
//        user.setEmail(rs.getString("email"));
//        user.setPhone(rs.getString("phone"));
//        return user;
//    }
//}
